package com.ruoyi.develop.goodsInvoice.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.develop.projectBaseInfo.domain.ProjectBaseInfo;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 发票申请 goods_invoice
 *
 * @author qh
 * @date 2023-01-05
 */
public class GoodsInvoice extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    private String id;

    /**
     * 发票编号
     */
    @Excel(name = "发票编号")
    private String no;

    /**
     * 发票金额
     */
    @Excel(name = "发票金额")
    private BigDecimal amount;

    /**
     * 开票实际金额
     */
    @Excel(name = "开票实际金额")
    private BigDecimal amountReal;

    /**
     * 剩余金额
     */
    @Excel(name = "剩余金额")
    private BigDecimal remaining;

    /**
     * 客户
     */
    @Excel(name = "客户")
    private String customerId;

    /**
     * 客户名称
     */
    @Excel(name = "客户名称")
    private String customerName;

    /**
     * 税号
     */
    @Excel(name = "税号")
    private String taxNo;

    /**
     * 申请开票日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "申请开票日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date invoiceApplyDate;


    /**
     * 开票日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "开票日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date invoiceDate;

    /**
     * 开票标识
     */
    @Excel(name = "开票标识")
    private String invoiceCompany;

    /**
     * 是否回款
     */
    @Excel(name = "是否回款")
    private String fundCallback;

    /**
     * 回款日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "回款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date backDate;

    /**
     * 开票人
     */
    @Excel(name = "开票人")
    private String drawerId;

    /**
     * 开票人姓名
     */
    @Excel(name = "开票人姓名")
    private String drawerName;

    /**
     * 销售人员
     */
    @Excel(name = "销售人员")
    private String saleId;

    /**
     * 销售人员姓名
     */
    @Excel(name = "销售人员姓名")
    private String saleName;

    /**
     * 附件 开票明细
     */
    @Excel(name = "附件")
    private String files;


    /**
     * 发票文件
     */
    @Excel(name = "发票文件")
    private String invoiceFile;

    /**
     * 状态
     */
    @Excel(name = "状态")
    private String status;

    private BigDecimal pinMoney;
    private BigDecimal pinRemain;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;

    private String deptId;
    private String deptName;

    private String type;
    private String projectId;
    private String projectName;
    private String projectNo;
    /** * 框架编号 */
    private String frameworkCode;
    /** * 框架id */
    private String frameworkId;
    /**
     * 工程名称
     */
    private String gongchengName;
    private List<ProjectBaseInfo> columns;

    public String getFrameworkCode() {
        return frameworkCode;
    }

    public void setFrameworkCode(String frameworkCode) {
        this.frameworkCode = frameworkCode;
    }

    public String getFrameworkId() {
        return frameworkId;
    }

    public void setFrameworkId(String frameworkId) {
        this.frameworkId = frameworkId;
    }

    public Date getInvoiceApplyDate() {
        return invoiceApplyDate;
    }

    public void setInvoiceApplyDate(Date invoiceApplyDate) {
        this.invoiceApplyDate = invoiceApplyDate;
    }

    public List<ProjectBaseInfo> getColumns() {
        return columns;
    }

    public void setColumns(List<ProjectBaseInfo> columns) {
        this.columns = columns;
    }

    public String getProjectNo() {
        return projectNo;
    }

    public void setProjectNo(String projectNo) {
        this.projectNo = projectNo;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getDeptId() {
        return deptId;
    }

    public void setDeptId(String deptId) {
        this.deptId = deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public BigDecimal getPinRemain() {
        return pinRemain;
    }

    public void setPinRemain(BigDecimal pinRemain) {
        this.pinRemain = pinRemain;
    }

    public BigDecimal getPinMoney() {
        return pinMoney;
    }

    public void setPinMoney(BigDecimal pinMoney) {
        this.pinMoney = pinMoney;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setNo(String no) {
        this.no = no;
    }

    public String getNo() {
        return no;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmountReal(BigDecimal amountReal) {
        this.amountReal = amountReal;
    }

    public BigDecimal getAmountReal() {
        return amountReal;
    }

    public void setRemaining(BigDecimal remaining) {
        this.remaining = remaining;
    }

    public BigDecimal getRemaining() {
        return remaining;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setTaxNo(String taxNo) {
        this.taxNo = taxNo;
    }

    public String getTaxNo() {
        return taxNo;
    }

    public void setInvoiceDate(Date invoiceDate) {
        this.invoiceDate = invoiceDate;
    }

    public Date getInvoiceDate() {
        return invoiceDate;
    }

    public void setInvoiceCompany(String invoiceCompany) {
        this.invoiceCompany = invoiceCompany;
    }

    public String getInvoiceCompany() {
        return invoiceCompany;
    }

    public void setFundCallback(String fundCallback) {
        this.fundCallback = fundCallback;
    }

    public String getFundCallback() {
        return fundCallback;
    }

    public void setBackDate(Date backDate) {
        this.backDate = backDate;
    }

    public Date getBackDate() {
        return backDate;
    }

    public void setDrawerId(String drawerId) {
        this.drawerId = drawerId;
    }

    public String getDrawerId() {
        return drawerId;
    }

    public void setDrawerName(String drawerName) {
        this.drawerName = drawerName;
    }

    public String getDrawerName() {
        return drawerName;
    }

    public void setSaleId(String saleId) {
        this.saleId = saleId;
    }

    public String getSaleId() {
        return saleId;
    }

    public void setSaleName(String saleName) {
        this.saleName = saleName;
    }

    public String getSaleName() {
        return saleName;
    }

    public void setFiles(String files) {
        this.files = files;
    }

    public String getFiles() {
        return files;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public String getDelFlag() {
        return delFlag;
    }

    public String getGongchengName() {
        return gongchengName;
    }

    public void setGongchengName(String gongchengName) {
        this.gongchengName = gongchengName;
    }

    public String getInvoiceFile() {
        return invoiceFile;
    }

    public void setInvoiceFile(String invoiceFile) {
        this.invoiceFile = invoiceFile;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("no", getNo())
                .append("amount", getAmount())
                .append("amountReal", getAmountReal())
                .append("remaining", getRemaining())
                .append("customerId", getCustomerId())
                .append("customerName", getCustomerName())
                .append("taxNo", getTaxNo())
                .append("invoiceDate", getInvoiceDate())
                .append("invoiceCompany", getInvoiceCompany())
                .append("fundCallback", getFundCallback())
                .append("backDate", getBackDate())
                .append("drawerId", getDrawerId())
                .append("drawerName", getDrawerName())
                .append("saleId", getSaleId())
                .append("saleName", getSaleName())
                .append("files", getFiles())
                .append("status", getStatus())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}
